from flask import Blueprint, render_template, request, jsonify, session
import hashlib #引入MD5加密的模块

from sqlalchemy.util.preloaded import sql_naming

from utils.database_util import query_date

# 创建一个名为 'user_center' 的蓝图对象，__name__ 表示当前模块的名称
user_center = Blueprint('user_center', __name__)


# 定义一个路由 '/user_center'，当访问这个路径时会调用 index() 函数
@user_center.route('/user_center')
def index():
    return render_template("user_center.html")


# 定义一个路由 '/login'，支持 GET 和 POST 请求方法
@user_center.route(rule='/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 从表单中获取用户名和密码
        username = request.form.get('username')
        password = request.form.get('password')

        # 将密码进行 MD5 加密
        password = hashlib.md5(password.encode()).hexdigest()

        # 构建 SQL 查询语句，检查用户名和密码是否匹配
        sql = "select * from users where username= '%s' and password='%s'" % (username, password)

        # 执行 SQL 查询
        result = query_date(sql)

        # 如果查询结果为空，说明用户名或密码错误，返回登录页面
        if len(result) == 0:
            return render_template("login.html")
        else:
            # 如果查询成功，设置会话信息并重定向到主页
            session['username'] = username
            session['islogin'] = 'true'
            session['userid'] = result[0].get("userid")
            session['nickname'] = result[0].get("nickname")
            session['role'] = result[0].get("role")
            return render_template("home.html")
    else:
        # 如果请求方法是 GET，则返回登录页面
        return render_template("login.html")


# 定义一个路由 '/register'，支持 GET 和 POST 请求方法
@user_center.route(rule='/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        # 从表单中获取用户名、密码和昵称
        username = request.form.get('username')
        password = request.form.get('password')
        nickname = request.form.get('nickname')

        # 将密码进行 MD5 加密
        password = hashlib.md5(password.encode()).hexdigest()

        # 构建 SQL 插入语句，将新用户的信息插入到数据库中
        sql = "insert into users(username,password,nickname) values('%s','%s','%s')" % (username, password, nickname)
        print(sql)  # 打印 SQL 语句（调试用）

        # 执行 SQL 插入操作
        result = query_date(sql)

        # 注册成功后自动登录，调用 login() 函数
        login()

        # 返回主页
        return render_template("home.html")
    else:
        # 如果请求方法是 GET，则返回注册页面
        return render_template("register.html")


@user_center.route('/logout', methods=['GET'])
def logout():
    # 清除session中的用户信息
    session.pop('username', None)
    session.pop('islogin', None)
    session.pop('userid', None)
    session.pop('nickname', None)
    session.pop('role', None)

    # 重定向到登录页面
    return render_template("/home.html")
@user_center.route('/shoucang')
def shoucang():
    # 这里应该是获取用户收藏的逻辑
    return render_template('shoucang.html')